package com.ifdom.thread.basiccreatethread;

/**
 * 实现多线程3种方式
 * 1. 实现Runnable，使用new Thread(new 实现类)去加载线程
 * 2. 继承扩展 Thread类
 * 3. 实现 Callable
 * <p>
 * 熟悉Thread类的API是进行多线程编程的基础
 * <p>
 * 三、Thread和Runnable的区别
 * 如果一个类继承Thread，则不适合资源共享。但是如果实现了Runable接口的话，则很容易的实现资源共享。
 * <p>
 * 总结：
 * <p>
 * 实现Runnable接口比继承Thread类所具有的优势：
 * <p>
 * 1）：适合多个相同的程序代码的线程去处理同一个资源
 * <p>
 * 2）：可以避免java中的单继承的限制
 * <p>
 * 3）：增加程序的健壮性，代码可以被多个线程共享，代码和数据独立
 * <p>
 * 4）：线程池只能放入实现Runable或callable类线程，不能直接放入继承Thread的类
 **/
public class ThreadWithRunable {
    public static void main(String[] args) {
        System.out.println("线程名：" + Thread.currentThread().getName() + "线程Id：" + Thread.currentThread().getId());

        // 创建一个线程
        ExtendRunable a = new ExtendRunable("A");
        // 创建一个线程
        ExtendRunable b = new ExtendRunable("B");

        new Thread(a).start();
        new Thread(b).start();
    }

}